<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // let m1 = new Map([
        //     ["a",123],
        //     [function fn(){

        //     },"这是一个函数"],
        //     [{a:12},888]
        // ]);

        // size
        // console.log(m1.size); //3




        // 外部添加map属性
        // let m2 = m1.set("abc",666);//Map(4) {'a' => 123, ƒ => '这是一个函数', {…} => 888, 'abc' => 666}

        // console.log(m2);

        // console.log(m1===m2); //true

        // m2.set("lalala","laowang");


        // 链式操作
        // m1.set("abc",666).set(null,999).set({},undefined);


        // console.log(m1);





        //    获取map对应的值

        // console.log(m1.get({a:12})); //undefined

        let obj ={ a: 12 };
        let m1 = new Map([
            ["a", 123],
            [function fn() {
                console.log("hahaha");
            }, "这是一个函数"],
            [obj, 888]
        ]);

        // // console.log(m1.get("a")); //123

        // console.log(m1.get(obj)); //undefined


        // 判断是否存在

        // let bool = m1.has("a");

        // console.log(bool); //true

        // 删除，删除成功返回true ， 删除失败，返回false
        
        // let bool = m1.delete("a");

        // console.log(bool);
        // console.log(m1);


        // 清除clear

        // m1.clear();
        // console.log(m1); //Map(0) {size: 0}


        // m1 key值
        // console.log(m1.keys());  //MapIterator {'a', ƒ, {…}}
        // 转数组
        // console.log([...m1.keys()]); //['a', ƒ, {…}]

        // [...m1.keys()][1]() //调用属性名的函数


        // value值
        // console.log(m1.values()); //MapIterator {123, '这是一个函数', 888}

        // entries
        // console.log(m1.entries()); //MapIterator {'a' => 123, ƒ => '这是一个函数', {…} => 888}


        // foreach

        // m1.forEach((val,key)=>{
        //     console.log(key,val);
        // })


    </script>
</body>

</html>